From: Benjamin Otte Date: Fri, 13 Jul 2018 12:52:43 +0000 (+0200) Subject: window: Update opaque region if background-color changes X-Git-Tag: archive/raspbian/3.24.39-1+rpi1~1^2~65^2~34^2~6 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=9008f7702dff689ce48f2cfa7ce42db099e4ef0c;p=gtk%2B3.0.git window: Update opaque region if background-color changes The opaque region is only set when the background color is opaque. So we need to do something about it when the background color changes. However, in the case where a size allocation is going to happen, we already do this update in size_allocate(), so in that case avoid doing it twice. --- diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index 9a4c8989a5..0d19a0a06c 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -7227,7 +7227,7 @@ subtract_corners_from_region (cairo_region_t *region, static void update_opaque_region (GtkWindow *window, - GtkBorder *border, + const GtkBorder *border, const GtkAllocation *allocation) { GtkWidget *widget = GTK_WIDGET (window); @@ -9005,11 +9005,24 @@ static void gtk_window_style_updated (GtkWidget *widget) { GtkCssStyleChange *change = gtk_style_context_get_change (gtk_widget_get_style_context (widget)); + GtkWindow *window = GTK_WINDOW (widget); GTK_WIDGET_CLASS (gtk_window_parent_class)->style_updated (widget); + if (!_gtk_widget_get_alloc_needed (widget) && + (change == NULL || gtk_css_style_change_changes_property (change, GTK_CSS_PROPERTY_BACKGROUND_COLOR))) + { + GtkAllocation allocation; + GtkBorder window_border; + + _gtk_widget_get_allocation (widget, &allocation); + get_shadow_width (window, &window_border); + + update_opaque_region (window, &window_border, &allocation); + } + if (change == NULL || gtk_css_style_change_changes_property (change, GTK_CSS_PROPERTY_ICON_THEME)) - update_themed_icon (GTK_WINDOW (widget)); + update_themed_icon (window); } /**